#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>

using namespace std;

vector<vector<string>> groupAnagrams(vector<string> &strs)
{
    // 存储排序好的单词，能对应上的所有原词
    unordered_map<string,vector<string>> hashTable;
    for(const auto& str: strs)
    {
        string tmp = str;
        sort(tmp.begin(),tmp.end());
        hashTable[tmp].push_back(str);
    }

    vector<vector<string>> result;
    for(const auto p : hashTable)
    {
        vector<string> tmp;
        for(const auto& str : p.second )
        {
            tmp.push_back(str);
        }
        result.push_back(tmp);
    }
    return result;
}